package AirportInfomations;

/*待办事项：把所有的数组给我换成动态数组Array*/
public class AirportInfo{
    /*
     * 未经声明，一律采用公制单位
     * 如:高度用英尺，修压用百帕，时间用UTC
     */
    /*先写机场基础信息*/
    public boolean IsAirportInitialize;
    public String ThisAirportName;//机场名
    public String ThisAirportIATA;//机场三字IATA
    public String ThisAirportICAO;//机场四字ICAO
    public float AirportAlt;//机场标高
    /*跑道信息，使用表格化一览*/
    public int Runways;//机场有多少条跑道
    public int RunwayID;//机场跑道ID
    public String[] RunwayName = new String[RunwayID];//机场跑道名，和跑道ID相匹配
    public int PhysicalRunways;
    public String[] RunwayConfigs = new String[PhysicalRunways];//机场跑道参数，如跑道 18L-36R 01-19 等，一般是两条跑道号为一对
    public int[] RunwayCRS = new int[RunwayID];//机场跑道航向，和跑道ID相匹配
    public boolean[] IsRunwayOpen = new boolean[Runways];//跑道是否开放，和跑道ID相匹配
    public boolean[] IsRunwayHaveILS = new boolean[RunwayID];
    public float[] RunwayILSFreq = new float[Runways];
    public String[] RunwayILSVoice = new String[Runways];
    public String[] RunwayILSName = new String[RunwayID];//ILS名称
    public int[] RunwayILS_CAT = new int[RunwayID];
    /*
     *所有机组的数据以表格化，如1号航班匹配所有数组的1号空位
     */
    /*本机场所有航班一览*/
    public int AllAirpotFlight;
    public int[] InFlightContorllerStatus = new int[AllAirpotFlight];
    /*
     *格式为 航班数字代号 管制代号
     *所有航班的管制状态一律以一下状态为准
     *且这些航班被管制员转交后才能自动改变代号
     * -1：航班已取消
     * 0：计划中
     *1：放行席位
     * 2：地面管制席位
     * 3：塔台席位
     * 4：进场席位
     * 5：离场席位（如果机场配备的话）
     * 6：已移交区域管制或者是移交飞行情报区
     * 7：未到达机场管制服务区域
     */
    /*机场机组信息*/
    public String[] InFlightNumbers = new String[AllAirpotFlight];//这些航班的呼号
    public String[] InFlightArrival = new String[AllAirpotFlight];//这些航班的目的地
    public int[] InFlightStatus = new int[AllAirpotFlight];//1为离港航班，2为进港航班
    public int[] InFlightParkingAirporn = new int[AllAirpotFlight];//到达航班是目的机位，出发航班是开车机位
    /*针对起飞机组的参数*/
    public String[] UsingSID = new String[AllAirpotFlight];//预计使用离场程序
    public int[] DepUsingRwy = new int[AllAirpotFlight];//预计使用跑道
    public int[] DepAlt = new int[AllAirpotFlight];//离场高度，在考虑是否统一掉，因为除了紧急情况都统一
    public int[] CRZAlt = new int[AllAirpotFlight];//巡航高度
    /*针对到港机组的参数*/
    public String[] UsingSTAR = new String[AllAirpotFlight];
    public String[] UsingFinalProgram = new String[AllAirpotFlight];//预计使用跑道程序
    public int[] FinalAlt = new int[AllAirpotFlight];//到达FAF时的高度，在考虑是否统一掉，因为除了紧急情况都按照标准进场程序的高度走
    public int[] ArrUsingRwy = new int[AllAirpotFlight];//预计使用跑道


    /*机场管制席位参数*/
    public String[] LastHandoffTime = new String[AllAirpotFlight];//用于记录上次管制员转交到其他频率时间
    /*先是放行*/
    public float CELFreq;//放行席位频率
    /*放行管制需要监视机场的参数*/
    public int AirportQNH;//机场修压
    public String AirprotMETAR;//总METAR
    public String[] AirportMETARS = new String[12];//机场的METAR信息，需要用满足METAR信息的格式，为了好区分和好填写，使用分离式填写，然后整合到METAR上面
    /*格式:METAR/SPECI 地方 天+时间 COR/AUTO/NIL 风 能见度 天气 乌云 温度 空气压力 趋势*/
    public String AirportInfoRadioCode;//机场通播字母


    /*然后是地面*/
    public float GNDFreq;//地面席位频率
    public String[] FlightTaxiVias = new String[AllAirpotFlight];//地面应记录每架航班的滑行路径
    public boolean[] IsApproveFlightTaxi = new boolean[AllAirpotFlight];//是否准许滑行，也可以是是否让位等
    /*针对离港*/
    public String[] FlightPushbankStartTime = new String[AllAirpotFlight];//准许航班开车时间，格式为 HHMM
    public String[] FlightPushbankOverTime = new String[AllAirpotFlight];//航班开完车时间，格式为 HHMM
    /*进港航班*/
    public String[] FlightHandoffInTime = new String[AllAirpotFlight];//塔台转交到本频率的时间，格式为 HHMM
    public String[] FlightDockedAtGateTime = new String[AllAirpotFlight];//航班滑行到达机位时间，格式为 HHMM

    /*下面是塔台*/
    public float TWRFreq;//塔台席位频率
    /*针对离港*/
    public String[] FlightInWaitpoint = new String[AllAirpotFlight];//记录该航班在哪个等待点等待起飞
    public int[] ISApprovedFlightTKF = new int[AllAirpotFlight];//是否准许航班起飞，0为跑到外等，1为上跑到等待，2为允许起飞
    public String[] FlightTKFTime = new String[AllAirpotFlight];//记录准许离港航班起飞时间
    public String[] FlightAirboneTime = new String[AllAirpotFlight];//记录离港航班离地时间
    public String[] HandOffToUPTime = new String[AllAirpotFlight];//记录离港航班转交到上层管制时间
    /*进港航班*/
    public boolean[] ISApprovedFlightLanding = new boolean[AllAirpotFlight];//是否准许航班降落
    public String[] FlightLandingTime = new String[AllAirpotFlight];//记录降落航班落地时间
    public String[] FlightExitRWYAt = new String[AllAirpotFlight];//记录该航班离开跑道在哪个等待点
    public String[] HandOffToGNDTime = new String[AllAirpotFlight];//记录该航班转交到地面时间

    /*再下面是进近和离场*/
    public float APRFreq;//进场席位频率
    public float DEPFreq;//离场位频率
    public float CTRFreq;
    /*针对离港*/
    public int[] FlightHandoffAlt = new int[AllAirpotFlight];//离场转交高度
    public String[] FlightRadarIdentfyTime = new String[AllAirpotFlight];//雷达识别时间*(应答机C模式被雷达识别时间)
    public boolean[] IsFlightViaSID = new boolean[AllAirpotFlight];//是否沿SID上到巡航高度
    public String[] NoViaSIDAltTime = new String[AllAirpotFlight];//取消高度限制的时间
    public String[] DepDirectTo = new String[AllAirpotFlight];//直飞点
    public String[] HandOffToCenterContorllerTime = new String[AllAirpotFlight];//转交到区调或飞行情报区的时间*(又称此机场终止对该机组服务的时间)
    /*进港航班*/
    public String[] HandOffOnTime = new String[AllAirpotFlight];//转交到本频率的时间*(又称此机场开始对该机组服务的时间)
    public boolean[] IsFlightViaSTAR = new boolean[AllAirpotFlight];//是否沿STAR下降到Final，包括RNAV和LNAV
    public int[] NoViaSTARTime = new int[AllAirpotFlight];//取消高度限制的时间
    public int[] NoViaStarRnavAlt = new int[AllAirpotFlight];
    public String[] AprDirectTo = new String[AllAirpotFlight];//直飞点
    public boolean[] IsApprovedILSApr = new boolean[AllAirpotFlight];//是否允许建立ILS进近(可以不包括允许G/S截获)
    public String[] ApprovedEstablishILSAprTime = new String[AllAirpotFlight];//允许建立ILS时间
    public String[] FlightILS_LOCInterceptedTime = new String[AllAirpotFlight];//航班截获ILS_LOC时间
    public String[] FlightILS_GSInterceptedTime = new String[AllAirpotFlight];//航班截获ILS_G/S时间
    public String[] HandOffToTowerTime = new String[AllAirpotFlight];//航班转交塔台时间
}

/*
 * 2024.11.6:该存储类重构构完毕
 */